package com.ruoyi.business.domain.dto.api.user;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 用户收货地址业务对象 tb_user_address
 *
 * @author ruoyi
 * @date 2025-09-25
 */

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel("用户收货地址业务对象")
public class EditMyAddressDTO implements Serializable {


    /**
     * 用户ID
     */
    @ApiModelProperty(value = "主键ID", required = true)
    @NotNull(message = "ID不能为空")
    private Long Id;

    /**
     * 收货人姓名
     */
    @ApiModelProperty(value = "收货人姓名", required = true)
    @NotBlank(message = "收货人姓名不能为空")
    private String receiverName;

    /**
     * 收货人电话
     */
    @ApiModelProperty(value = "收货人电话", required = true)
    @NotBlank(message = "收货人电话不能为空")
    private String receiverPhone;

    /**
     * 国家代码
     */
    @ApiModelProperty(value = "国家代码", required = false)
    private String countryCode;

    /**
     * 省份名称
     */
    @ApiModelProperty(value = "省份名称", required = true)
    private String provinceName;

    /**
     * 城市名称
     */
    @ApiModelProperty(value = "城市名称", required = true)
    @NotBlank(message = "城市名称不能为空")
    private String cityName;

    /**
     * 区县名称
     */
    @ApiModelProperty(value = "区县名称", required = true)
    @NotBlank(message = "区县名称不能为空")
    private String districtName;

    /**
     * 街道名称
     */
    @ApiModelProperty(value = "街道名称", required = false)
    private String streetName;

    /**
     * 详细地址
     */
    @ApiModelProperty(value = "详细地址", required = true)
    @NotBlank(message = "详细地址不能为空")
    private String detailAddress;

    /**
     * 邮政编码
     */
    @ApiModelProperty(value = "邮政编码", required = false)
    private String postalCode;


    /**
     * 地址标签(家、公司、学校等)
     */
    @ApiModelProperty(value = "地址标签(家、公司、学校等)", required = true)
    private String addressTag;

    /**
     * 经度
     */
    @ApiModelProperty(value = "经度", required = false)
    private BigDecimal longitude;

    /**
     * 纬度
     */
    @ApiModelProperty(value = "纬度", required = false)
    private BigDecimal latitude;

    /**
     * 状态(0:禁用 1:启用)
     */
    @ApiModelProperty(value = "状态(0:禁用 1:启用)", required = false)
    private Integer status;

}
